import axios from "./axios.config";
import util from "./util";

class ReviewApi {
  /**
   * 获取评论列表
   * @param {number} limit - 每页评论数
   * @param {number} offset - 偏移量
   * @param {string} orderBy - 排序字段
   * @param {string} sort - 排序方式 (asc/desc)
   * @returns {Promise<Object>} 评论列表数据
   */
  async getReviewList(limit = 10, offset = 0, orderBy = 'created_time', sort = 'desc') {
    try {
      const result = await axios.get(`/deviceFeedback/admin/all?limit=${limit}&offset=${offset}&orderBy=${orderBy}&sort=${sort}`);
      return util.jsonTransfer(result.data);
    } catch (error) {
      console.error('获取评论列表失败:', error);
      throw error;
    }
  }

  /**
   * 获取用户自己的评论列表
   * @param {number} userId - 用户ID
   * @param {number} limit - 每页评论数
   * @param {number} offset - 偏移量
   * @returns {Promise<Object>} 评论列表数据
   */
  async getUserReviewList(userId, limit = 10, offset = 0) {
    try {
      const result = await axios.get(`/deviceFeedback/user/${userId}?limit=${limit}&offset=${offset}`);
      return util.jsonTransfer(result.data);
    } catch (error) {
      console.error('获取用户评论列表失败:', error);
      throw error;
    }
  }

  /**
   * 删除评论
   * @param {number} feedbackId - 评论ID
   * @returns {Promise<Object>} 删除结果
   */
  async deleteReview(feedbackId) {
    try {
      const result = await axios.delete(`/deviceFeedback/${feedbackId}`);
      return util.jsonTransfer(result.data);
    } catch (error) {
      console.error('删除评论失败:', error);
      throw error;
    }
  }

  /**
   * 管理员删除评论
   * @param {number} feedbackId - 评论ID
   * @returns {Promise<Object>} 删除结果
   */
  async adminDeleteReview(feedbackId) {
    try {
      const result = await axios.delete(`/deviceFeedback/admin/${feedbackId}`);
      return util.jsonTransfer(result.data);
    } catch (error) {
      console.error('管理员删除评论失败:', error);
      throw error;
    }
  }

  /**
   * 编辑评论
   * @param {number} feedbackId - 评论ID
   * @param {Object} updatedData - 更新的评论数据
   * @returns {Promise<Object>} 编辑结果
   */
  async editReview(feedbackId, updatedData) {
    try {
      const result = await axios.put(`/deviceFeedback/${feedbackId}`, updatedData);
      return util.jsonTransfer(result.data);
    } catch (error) {
      console.error('编辑评论失败:', error);
      throw error;
    }
  }
}

export default ReviewApi;
